OpenBlocks IoT BX1を触ってみた
こんにちは、せーのです。今日はぷらっとホーム株式会社さんよりスグレモノのIoTデバイス「OpenBlocks IoT BX1」をお借りしたのでご紹介致します。
OpenBlocks IoT BX1ってなんだ
見た目
OpenBlocks IoTはEdisonやRaspberry Piと同じシングルボードとしての役割も果たす画期的なIoTゲートウェイです。見た目はこの通り、かなりのコンパクトサイズになります。
とりあえず中身を開いてみました。
中にはEdisonが入ってますね。ということは操作はEdisonでのやり方を踏襲できそうです。ちなみに上蓋からラインが一本つながっているので勢い良く取ると壊れます。気をつけて下さい。
インターフェース
OpenBlocks IoTはIoT向けということでインターフェースが多いです。 基本は上の写真にある給電コンソール[BX1コネクタ]からUSBにて給電します。つまり外に設置する場合はUSB用の充電器が必要になるわけです。そしてこのBX1コネクタはUSBの他にもRS-232C、RS-485、GPIO、Ethernet等のインターフェースに対応しています。 無線はWi-Fiが基本になります。Wi-FiはClient ModeとAP Modeの2つのモードがあり、Client Modeは既存のWi-Fiネットワークへの接続、AP ModeはOpenBlocks自らがアクセスポイントとなる場合に使用します。 そう、OpenBlocksの大きな特徴の一つは「3G SIMが使える」というところです。BX1であればDocomo系、BX3であればSoftbank系のSIMが挿せるようになっており(ちょうど上の写真の下側の口です)、そのまま3G回線を使用してインターネットに接続することができます。Wi-Fiを屋外に組まなくてもいい、というのは非常に実用的でいいですね! 他にもBLE対応のBluetoothが無線通信モジュールとして搭載されていますので、大抵のセンサーからのデータを受け取り、インターネットへ投げることができますね。まさに「IoTゲートウェイ」です。
接続してみる
それでは早速接続してみましょう。OpenBlocksはWeb UIによる設定画面が用意されていますのでそれを使ってみましょう。まずはケーブルをUSBにつなげてみます。バスパワー電源なのでこれで電源が入ります。
初期状態では[IoTFamily-XXXXX]や[BX1XXXXXXX]等のWi-Fiスポットが表示されますのでそこに手元のデバイスのWi-Fiをつなげます。今回はスマホでやってみます。パスフレーズはここに書いてあります。
そして初期設定であるURL[192.168.254.254:880]にアクセスすると初期設定画面が出てきました。
次にユーザー設定画面です。
ユーザーの登録が終わると設定画面が現れます。
ちなみにPCからアクセスするとこんな感じになります。
Web UIを使った設定色々
ネットワーク
それではせっかくWeb UIがあるのでこれを使って色々設定していきましょう。 まずはネットワーク周りです。
重要なのは[Service Network]の欄です。ここでClient ModeかAP Modeかを選んで設定していくことになります。AP Modeを選択した場合は3G SIMのAPN等もここで設定できます。一方Client Modeの場合は普通のサーバーやルータの設定と同じような感じです。 保存するとrebootを促されます。rebootして初めて設定が反映されます。SSIDに5GHz帯のネットワークを選ぶと私の環境では繋がらなかったので2.4GHzを選択したほうが無難、なのかもしれません。 ちなみに一回繋がらなくなると中々復旧が難しかったです。私の場合は下にあるコンソールでの接続からネットワークをコンソールにて設定しなおして復旧させました。
SSH
SSHログインは必ず必要になるので設定しておきましょう。Web UIではボタン一つで設定できます。
確認してみます。
Tsuyoshi$ ssh [email protected] Warning: Permanently added '192.168.1.13' (RSA) to the list of known hosts. [email protected]'s password: Linux obsiottest.example.org 3.10.17-poky-edison #3 SMP PREEMPT Mon Apr 20 13:05:54 JST 2015 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Jan 2 02:27:01 2000 root@obsiottest:~#
問題ないようです。
Bluetooth
センサータグからデータを拾ってくる事を考えるとBluetoothも有効にしておくのがいいでしょう。これもWeb UIなら「有効にする」を選択して保存するだけです。
Bluetoothを有効にすると初めてBluetoothの設定タブが現れます。
ここでBluetoothデバイスとのペアリングもできます(Bluetooth-relatedからBluetooth device detection)ので実際に拾えるかどうかをテストしておくと安心ですね。
NTP
最初の状態では2000/1/1なのでまずSyncボタンにてつながっているPCの時刻と同期、後はNTPサーバーを設定しておけば同期してくれます。
iptables
最近はIoTデバイスの脆弱性を突かれる、という事象も報告されていっていますので、どこの部分が空いているのかをチェックしておきましょう。IPv4とIPv6のiptablesが参照できます。
これでひと通りの設定が完了です。
コンソールを使った設定確認
次はコンソールを使ってデバイスの中身を色々見て行きましょう。
接続する
コンソールでの接続は先程のWeb UIでのネットワークの設定がうまく行っていればSSHでサクッとつなげても良いかと思います。シリアルケーブルでつながっているのでscreenでも繋げられます。
screen /dev/cu.usbXXXXXXXXXXXXXXXXXX(デバイスによって異なるのでタブキーで候補表示させて入力する) 115200 -L
これでEnterキーを押すとコンソールが空になるので、もう一回EnterキーでID、PASSの入力画面になります。たまに「Sorry, could not find a PTY」という表示が下部に出て繋がらない、ということもありますが、その場合は原始的にケーブルを抜き差しすると戻る場合が多いです。
Debian GNU/Linux 7 obsiottest.example.org ttyMFD2 obsiottest login: root Password: Last login: Sat Jan 1 11:00:13 JST 2000 on ttyMFD2 Linux obsiottest.example.org 3.10.17-poky-edison #3 SMP PREEMPT Mon Apr 20 13:05:54 JST 2015 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@obsiottest:~#
設定値のチェック
まずはOSカーネルを見てみます。
root@obsiottest:~# uname -a Linux obsiottest.example.org 3.10.17-poky-edison #3 SMP PREEMPT Mon Apr 20 13:05:54 JST 2015 i686 GNU/Linux
OSはDebianで最新のEdisonのファームウェアが入っているようですね。最新じゃない方はここにファームがあるのでアップデートしてみましょう。
root@obsiottest:~# apt-get update Hit http://ftp.plathome.co.jp wheezy Release.gpg Hit http://ftp.plathome.co.jp wheezy/updates Release.gpg Hit http://ftp.plathome.co.jp ./ Release.gpg Hit http://ftp.plathome.co.jp wheezy Release Hit http://ftp.plathome.co.jp wheezy/updates Release Hit http://ftp.plathome.co.jp ./ Release Hit http://ftp.plathome.co.jp wheezy/main Sources Hit http://ftp.plathome.co.jp wheezy/main i386 Packages Hit http://ftp.plathome.co.jp wheezy/main Translation-en Hit http://ftp.plathome.co.jp wheezy/updates/main Sources Hit http://ftp.plathome.co.jp wheezy/updates/main i386 Packages Hit http://ftp.plathome.co.jp wheezy/updates/main Translation-en Hit http://ftp.plathome.co.jp ./ Packages Ign http://ftp.plathome.co.jp ./ Translation-en Reading package lists... Done root@obsiottest# apt-get -y --force-yes install kernel-image-obsbx1 openblocks-iot-webui root@obsiottest# reboot
シリアルの電源を常にONに
OpenBlocksは低消費電力設定があり、しばらく負荷がないと約60mAから約35mAに低下します。 低消費電力時には、シリアルコンソールからのキー入力の最初の1打目を取りこぼしますので開発中は常にONにしておくと楽です。
root@obsiottest:~# echo on > /sys/devices/pci0000:00/0000:00:04.3/power/control
ディスクモードの確認
OpenBlocksにはディスクモードが[RAMディスクモード]と[ストレージディスクモード]の2つあります。RAMディスクモードだと保存しないで変更した内容は再起動で失われてしまいます。保存するにはflashcfgコマンドを打てばOKです。
root@obsiottest:~# flashcfg -S Overwrites the current data. Are you ok? [y|N] y
dfコマンドでディスクの中身を確認してみます。
root@obsiottest:~# df -h Filesystem Size Used Avail Use% Mounted on rootfs 184M 151M 24M 87% / /dev/root 184M 151M 24M 87% / devtmpfs 449M 0 449M 0% /dev tmpfs 97M 304K 96M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 193M 0 193M 0% /run/shm /dev/mmcblk0p10 2.3G 577M 1.6G 27% /.rw aufs 2.3G 577M 1.6G 27% /etc aufs 2.3G 577M 1.6G 27% /bin aufs 2.3G 577M 1.6G 27% /home aufs 2.3G 577M 1.6G 27% /lib aufs 2.3G 577M 1.6G 27% /sbin aufs 2.3G 577M 1.6G 27% /usr aufs 2.3G 577M 1.6G 27% /var aufs 2.3G 577M 1.6G 27% /root aufs 2.3G 577M 1.6G 27% /opt aufs 2.3G 577M 1.6G 27% /srv aufs 2.3G 577M 1.6G 27% /media /dev/mmcblk0p5 1003K 19K 913K 3% /factory sensor_data 17M 0 17M 0% /var/webui/sensor_data emitter_buf 65M 0 65M 0% /opt/pd/emitter/var log_dir 51M 8.0K 51M 1% /var/webui/logs
この中に/.rwにマウントされているのが[/dev/mmcblk0p10]であればディスクモードということになります。これがRAMモードだとtmpfsにマウントされています。ディスクモードにするには
root@obsiottest:~# e2label /dev/mmcblk0p10 DEBIAN root@obsiottest:~# reboot
でOKです。
まとめ
いかがでしたでしょうか。今回はOpenBlocksのWebからの初期設定とデバイスそのものの状態を確認してみました。 次回は今回書ききれなかったコンソールからのネットワークの確認やセンサーデバイスからのデータ取得方法等を書いていきます!